const api = require('../../../utils/api');

Page({
  data: {
    userId: '',         // 用户ID
    username: '',       // 用户名
    userInfo: null,     // 用户信息
    shareList: [],      // 用户分享列表
    pageNum: 1,         // 当前页码
    pageSize: 10,       // 每页大小
    total: 0,           // 总数据量
    status: true,      // 加载状态
    hasMore: true,      // 是否有更多数据
    errorMsg: ''        // 错误信息
  },

  onLoad(options) {
    // 获取从社区页面传递过来的参数
    const { userId, username } = options;
    this.setData({
      userId,
      username: decodeURIComponent(username)
    });
    
    // 设置页面标题
    wx.setNavigationBarTitle({
      title: `${username}的分享`
    });
    
    // 加载用户信息和分享数据
    this.loadUserInfo();
    this.loadUserShares();
  },

  // 加载用户信息
  loadUserInfo() {
    if (!this.data.userId) return;
    
    api.my.getUserInfo(this.data.userId).then(res => {
      if (res) {
        this.setData({
          userInfo: res
        });
      }
    }).catch(err => {
      console.error('获取用户信息失败:', err);
    });
  },

  // 加载用户分享列表
  loadUserShares() {
    // 防止重复加载
    if (this.data.loading || (!this.data.hasMore && this.data.pageNum > 1)) {
      return;
    }

    this.setData({ loading: true, errorMsg: '' });

    // 构建查询参数
    const params = {
      userId: this.data.userId,
      pageNum: this.data.pageNum,
      pageSize: this.data.pageSize
    };

    // 调用正确的API接口获取其他用户的分享历史，使用userId作为查询参数
    api.community.getUserShares(this.data.userId).then(res => {
      // 详细日志，帮助调试API返回结构
      console.log('API返回数据:', res);
      
      // 适配不同的数据结构
      let total = 0;
      let records = [];
      
      // 尝试多种可能的响应结构
      if (res && res.code === 0) {
        // 标准分页响应
        if (res.data && res.data.records) {
          total = res.data.total || 0;
          records = res.data.records || [];
        } 
        // 直接返回数据数组
        else if (res.data && Array.isArray(res.data)) {
          records = res.data;
          total = res.data.length;
        }
      }
      // 直接返回数组
      else if (Array.isArray(res)) {
        records = res;
        total = res.length;
      }
      
      console.log('提取的数据:', { total, records });
      
      // 为每个分享项添加isLiked字段
      const sharesWithLikeStatus = records.map(item => ({
        ...item,
        isLiked: item.isLiked || false
      }));
      
      // 合并数据，实现分页加载
      const newShareList = this.data.pageNum === 1 ? sharesWithLikeStatus : [...this.data.shareList, ...sharesWithLikeStatus];
      
      this.setData({
        shareList: newShareList,
        total,
        hasMore: newShareList.length < total,
        loading: false
      });
    }).catch(err => {
      console.error('获取用户分享列表失败:', err);
      this.setData({
        loading: false,
        errorMsg: '网络请求失败，请稍后重试'
      });
    });
  },

  // 跳转到分享详情页面
  goToShareDetail(e) {
    const shareId = e.currentTarget.dataset.shareid;
    // 从当前页面数据中获取userId
    const userId = this.data.userId;
    wx.navigateTo({
      url: `/pages/community/shareDetail/shareDetail?id=${shareId}&userId=${userId}`
    });
  },

  // 下拉刷新
  onPullDownRefresh() {
    // 重置分页参数
    this.setData({
      pageNum: 1,
      shareList: [],
      hasMore: true
    });
    
    // 重新加载数据
    this.loadUserShares().then(() => {
      // 结束下拉刷新
      wx.stopPullDownRefresh();
    });
  },

  // 上拉加载更多
  onReachBottom() {
    if (!this.data.hasMore || this.data.loading) {
      return;
    }
    
    // 增加页码并加载更多数据
    this.setData({
      pageNum: this.data.pageNum + 1
    });
    
    this.loadUserShares();
  },
  
  // 切换点赞状态
  toggleLike(e) {
    const postId = e.currentTarget.dataset.id;
    const shareList = this.data.shareList;
    
    // 查找并更新对应分享项的点赞状态
    const updatedShareList = shareList.map(item => {
      if (item.id === postId) {
        const newIsLiked = !item.isLiked;
        // 更新点赞数
        const newLikeCount = newIsLiked ? 
          (item.likeCount || 0) + 1 : 
          Math.max(0, (item.likeCount || 1) - 1);
        
        return {
          ...item,
          isLiked: newIsLiked,
          likeCount: newLikeCount
        };
      }
      return item;
    });
    
    // 更新数据
    this.setData({
      shareList: updatedShareList
    });
    
    console.log(`分享 ${postId} 点赞状态切换为: ${updatedShareList.find(item => item.id === postId).isLiked}`);
  }
});